EF এর সাথে ASP.NET Identity Integration

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Entity Framework এ Security Features |
175
175

ASP.NET Identity হল একটি ফ্রেমওয়ার্ক যা ASP.NET অ্যাপ্লিকেশনগুলিতে ব্যবহারকারী এবং তাদের ভূমিকা (roles), অথেনটিকেশন (authentication), এবং অথরাইজেশন (authorization) পরিচালনা করার জন্য ব্যবহৃত হয়। Entity Framework (EF) এর সাথে ASP.NET Identity ইন্টিগ্রেট করলে, আপনি ডেটাবেসে ব্যবহারকারীর তথ্য সঞ্চয় এবং ব্যবস্থাপনা করতে পারবেন, যেমন পাসওয়ার্ড, রোল, লগইন তথ্য ইত্যাদি।

ASP.NET Identity এবং Entity Framework একসাথে কাজ করে ব্যবহারকারীর সুরক্ষা এবং অ্যাপ্লিকেশন নিরাপত্তা নিশ্চিত করতে। ASP.NET Identity সাধারণত EF Core বা EF 6 এর উপর ভিত্তি করে কাজ করে, এবং এটি ডেটাবেস টেবিল তৈরি এবং পরিচালনা করার জন্য EF এর মাইগ্রেশন সিস্টেম ব্যবহার করে।


ASP.NET Identity এর প্রধান উপাদান

ASP.NET Identity কয়েকটি গুরুত্বপূর্ণ উপাদান দিয়ে গঠিত:

  1. User: ব্যবহারকারী সম্পর্কিত তথ্য (যেমন, পাসওয়ার্ড, ইউজারনেম, ইমেইল) সংরক্ষণ করে।
  2. Role: ব্যবহারকারীর রোল (যেমন, অ্যাডমিন, সাধারণ ব্যবহারকারী) সংরক্ষণ করে।
  3. UserManager: ব্যবহারকারীদের পরিচালনা করার জন্য ব্যবহৃত একটি ক্লাস।
  4. SignInManager: ব্যবহারকারীর সাইন ইন এবং সাইন আউট অপারেশন পরিচালনা করে।

EF এর সাথে ASP.NET Identity Integration

EF এর সাথে ASP.NET Identity ইন্টিগ্রেট করার জন্য, প্রথমে Identity প্যাকেজ ইনস্টল করতে হবে এবং তারপর ডেটাবেস কনটেক্সট (DbContext) কনফিগার করতে হবে।


১. ASP.NET Identity NuGet Package ইনস্টল করা

NuGet Package Manager ব্যবহার করে ASP.NET Identity প্যাকেজ ইনস্টল করতে হবে।

  1. NuGet প্যাকেজ ইনস্টল করা:

    Visual Studio তে NuGet Package Manager ব্যবহার করে ASP.NET Identity ইনস্টল করতে নিচের কমান্ডটি চালান:

    Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore
    

    এই প্যাকেজটি ASP.NET Identity এবং EF Core এর মধ্যে ইন্টিগ্রেশন করতে সহায়ক হবে।


২. ApplicationDbContext তৈরি করা

ApplicationDbContext হল একটি ক্লাস যা ASP.NET Identity এবং EF Core ডেটাবেস কনটেক্সট ম্যানেজ করে। এটি IdentityDbContext ক্লাস থেকে ইনহেরিট করা হয় এবং Identity সম্পর্কিত টেবিলগুলো (যেমন, Users, Roles) তৈরি করতে সাহায্য করে।

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    // অন্যান্য DbSet গুলি এখানে যুক্ত করুন
    public DbSet<Product> Products { get; set; }
}

এখানে, ApplicationUser হল IdentityUser থেকে ইনহেরিট করা কাস্টম ইউজার ক্লাস যা আপনি ব্যবহারকারীদের সম্পর্কিত অতিরিক্ত তথ্য (যেমন, Full Name) সঞ্চয় করার জন্য কাস্টমাইজ করতে পারেন।


৩. ApplicationUser কাস্টমাইজ করা

ApplicationUser ক্লাসটি ASP.NET Identity এর ইউজার মডেল, এবং এটিতে আপনি অতিরিক্ত প্রপার্টি যোগ করতে পারেন যেমন, নাম, জন্মতারিখ ইত্যাদি। এটি IdentityUser থেকে ইনহেরিট করা হয়।

public class ApplicationUser : IdentityUser
{
    public string FullName { get; set; }
}

৪. Startup.cs তে Identity কনফিগারেশন

ASP.NET Core অ্যাপ্লিকেশনটি শুরু করার সময়, Identity কনফিগারেশনটি Startup.cs ফাইলে করতে হয়। এখানে AddIdentity মেথড ব্যবহার করা হয় Identity কনফিগার করতে।

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>()
                .AddDefaultTokenProviders();

        services.AddControllersWithViews();
    }
}

এখানে, ApplicationDbContext এবং ApplicationUser যুক্ত করা হয়েছে এবং AddEntityFrameworkStores<ApplicationDbContext>() মেথডটি EF এর সাথে Identity ইন্টিগ্রেট করার জন্য ব্যবহার করা হয়েছে।


৫. Identity Migrations পরিচালনা করা

EF Core ব্যবহার করার ফলে ASP.NET Identity ডেটাবেস টেবিলগুলো তৈরি করার জন্য মাইগ্রেশন ব্যবহার করতে হবে। মাইগ্রেশনগুলির মাধ্যমে Identity সম্পর্কিত টেবিলগুলো ডেটাবেসে তৈরি হবে, যেমন AspNetUsers, AspNetRoles, AspNetUserRoles ইত্যাদি।

  1. মাইগ্রেশন তৈরি করা:

    Add-Migration InitialCreate
    
  2. ডেটাবেস আপডেট করা:

    Update-Database
    

এটি EF Core মাইগ্রেশন ব্যবহার করে ডেটাবেসে ASP.NET Identity এর জন্য প্রয়োজনীয় টেবিলগুলো তৈরি করবে।


৬. ব্যবহারকারী সাইন ইন এবং সাইন আউট

ASP.NET Identity এর মাধ্যমে ইউজার সাইন ইন এবং সাইন আউট করতে SignInManager ব্যবহার করা হয়।

সাইন ইন:

var result = await _signInManager.PasswordSignInAsync(user, password, rememberMe: false, lockoutOnFailure: false);

if (result.Succeeded)
{
    // সাইন ইন সফল
}

সাইন আউট:

await _signInManager.SignOutAsync();

৭. ASP.NET Identity রোল এবং রোল-ভিত্তিক অথরাইজেশন

ASP.NET Identity এ রোল (roles) ব্যবহারের মাধ্যমে আপনি বিভিন্ন ইউজারের জন্য বিভিন্ন অ্যাকসেস পারমিশন সেট করতে পারেন। রোল যোগ করতে এবং ইউজারের সাথে রোল অ্যাসাইন করতে RoleManager ব্যবহার করা হয়।

রোল তৈরি করা:

var roleManager = serviceProvider.GetRequiredService<RoleManager<IdentityRole>>();
if (!await roleManager.RoleExistsAsync("Admin"))
{
    var role = new IdentityRole("Admin");
    await roleManager.CreateAsync(role);
}

ইউজারকে রোল অ্যাসাইন করা:

var user = await _userManager.FindByNameAsync("username");
await _userManager.AddToRoleAsync(user, "Admin");

সারাংশ

EF এর সাথে ASP.NET Identity ইন্টিগ্রেট করলে, আপনি অথেনটিকেশন এবং অথরাইজেশন এর প্রক্রিয়াগুলি সুষ্ঠুভাবে পরিচালনা করতে পারবেন। Identity প্যাকেজটি ডেটাবেসে ইউজার এবং রোল তথ্য সংরক্ষণ করার সুবিধা দেয়, এবং EF Core মাইগ্রেশন ব্যবহারের মাধ্যমে Identity টেবিলগুলি সহজেই তৈরি করা যায়। Identity Manager, RoleManager, এবং SignInManager এর মতো টুলস ব্যবহার করে ইউজার ম্যানেজমেন্ট আরও শক্তিশালী হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion